package com.lihang.common.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data//生成get之类的方法
@NoArgsConstructor//无参构造
@AllArgsConstructor//全参构造
public class Result<T> {
    private Integer code;//前后端统一，前端叫什么这里就叫什么
    private String message;//针对code做一个中文的说明
    private T data;//T是范型，为什么要用范型？？为什么比Object好，Object是什么？？

    //以下是成功的情况的返回
    public static <T> Result<T> success(){      //返回数据的封装
        return new Result<>(20000,"sucsess",null);
    }
    public static <T> Result<T> success(T data){      //传入一个数据,把数据返回
        return new Result<>(20000,"success",data);
    }
    public static <T> Result<T> success(T data,String message){      //传入数据并且带消息
        return new Result<>(20000,message,data);
    }
    public static <T> Result<T> success(String message){      //传入消息，但是不带数据
        return new Result<>(20000,message,null);
    }

    //以下是失败情况下的返回
    public static <T> Result<T> fail(){
        return new Result<>(20001,"fail",null);
    }
    public static <T> Result<T> fail(Integer code){
        return new Result<>(code,"fail",null);
    }
    public static <T> Result<T> fail(Integer code,String message){
        return new Result<>(code,message,null);
    }
    public static <T> Result<T> fail(String message){
        return new Result<>(20001,message,null);
    }
}
